package banco.negocio;

import banco.dados.RepositorioClientes;
import banco.negocio.excecoes.ClienteExistenteException;
import banco.negocio.excecoes.ClienteInexistenteException;

public class CadastroClientes {

	RepositorioClientes repositorioClientes;

	public CadastroClientes(RepositorioClientes cliente) {
		repositorioClientes = cliente;
	}

	public void atualizar(Cliente cliente) throws ClienteInexistenteException {
		repositorioClientes.atualizar(cliente);
	}

	private boolean cpfValido(String cpf) {
		boolean resposta = true;
		// Verifica se o CPF tem tamanho correto
		resposta = cpf.length() == 11;
		// Verifica se todos os caracteres sao digitos
		for (int i = 0; i < cpf.length() && resposta; i++) {
			resposta = Character.isDigit(cpf.charAt(i));
		}
		return resposta;
	}

	public boolean existe(String cpf) {
		return repositorioClientes.existe(cpf);
	}

	public void inserir(Cliente novoCliente) throws ClienteExistenteException {
		String cpf = novoCliente.getCpf();
		if (cpfValido(cpf)) {
			repositorioClientes.inserir(novoCliente);
		}
	}

	public Cliente procurar(String cpf) throws ClienteInexistenteException {
		return repositorioClientes.procurar(cpf);
	}

	public void remover(String cpf) throws ClienteInexistenteException {
		repositorioClientes.remover(cpf);
	}

}
